<!DOCTYPE html>
<html>
<head>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <title>Cookies are sent on same origin violation reports</title>
    <!-- CSP headers
         Content-Security-Policy: script-src 'unsafe-inline' 'self'; img-src 'none'; report-uri /reporting/resources/report.py?op=put&reportID={{$id}}
         -->
</head>
<body>
<script>
  var test = async_test("Image should not load");
  fetch(
    "/cookies/resources/set-cookie.py?name=cspViolationReportCookie2&path=" + encodeURIComponent("/"),
    {mode: 'no-cors', credentials: 'include'})
  .then(() => {
    // Loading `img` will generate a CSP violation report.
    // As this test is for covering the behavior of the deprecated "report-uri" directive [1], the
    // underlying report is backed by a browser-initiated fetch "keepalive" request [2]. Per
    // keepalive spec [3], such request may outlive this entire document itself. Hence, the cookie
    // this test wants to test, i.e. "cspViolationReportCookie2", must NOT be cleared before the
    // browser entirely sending out the report request.
    // [1]: https://www.w3.org/TR/CSP3/#report-uri
    // [2]: https://www.w3.org/TR/CSP3/#report-violation
    // [3]: https://fetch.spec.whatwg.org/#request-keepalive-flag
    const img = new Image();
    img.onerror = test.step_func_done();
    img.onload = test.unreached_func("Should not have loaded the image");

    img.src = "../support/fail.png";
    document.body.appendChild(img);
  });
</script>
<script async defer src='../support/checkReport.sub.js?reportField=violated-directive&reportValue=img-src%20%27none%27&cookiePresent=cspViolationReportCookie2'></script>

</body>
</html>
